-- 秒杀脚本：确保每个人只能报一个社团，且社团人数不超过上限
-- 参数：
-- KEYS[1]：学生报名标记键（格式：club:student:{student_name}:registration）
-- KEYS[2]：社团报名人数键（格式：club:{club_name}:count）
-- KEYS[3]：社团人数上限键（格式：club:{club_name}:limit）
-- ARGV[1]：社团名称
-- ARGV[2]：学生名称
-- ARGV[3]：当前时间戳

-- 检查学生是否已报名
if redis.call('EXISTS', KEYS[1]) == 1 then
    return {0, '您已报名社团，不能重复报名'}
end

-- 检查社团人数是否已满
local currentCount = tonumber(redis.call('GET', KEYS[2]) or '0')
local limit = tonumber(redis.call('GET', KEYS[3]) or '0')

if currentCount >= limit then
    return {0, '社团人数已满，报名失败'}
end

-- 增加社团报名人数
redis.call('INCR', KEYS[2])

-- 标记学生已报名
redis.call('SET', KEYS[1], ARGV[1])
redis.call('EXPIRE', KEYS[1], 86400) -- 有效期1天

return {1, '报名成功', ARGV[1], ARGV[2], ARGV[3]}
